原生JavaScript无缝轮播图特效

您所在的位置:网站首页 html 轮播图特效 原生JavaScript无缝轮播图特效

原生JavaScript无缝轮播图特效

2024-07-18 01:12:44| 来源: 网络整理| 查看: 265

什么是轮播图?

轮播图,图片旋转器,滑片,无论你怎么叫这玩意,它在网络上无处不在。轮播图在电商网站主页上广泛应用,大多数电商网站的主页上都有它:

高大上的无缝轮播 本轮播图Demo

由于仿色压缩将就看吧!(手动滑稽) 喏~两个链接甩给泥萌 Github仓库文件 在线Demo(移动端加载很慢)

前言

网上有很多的轮播图特效,部分采用的transition属性结合JS实现滚动,但是很遗憾没有无缝效果,什么是无缝?我给前端小白画了一个示意图。另外本文是我写的第一篇文章,难免有生疏之处。包含很多知识点回顾,很适合JS新手学习。

实际上1-5才是真正的图片(红色的东西是个iphone哈哈,当作是container吧)

当焦点位于图片1时,如果再往前滚的话,整个队列会被拉倒真正的第五张图。至于真正的图片1前面的副本图片5只是让用户产生视觉差,从而不会让用户明显感觉到图片被倒向了图片5,看起来就像时无缝轮播。 同理当焦点位于图片5时,如果再往后滚,道理同上不再赘述。

实现功能

1.当鼠标放入容器内时左右出现控制按钮,并且轮播动画停止。 2.当鼠标移出时,控制按钮隐藏,轮播继续。 3.焦点随图片的滚动而变化。 4.跳跃点击焦点,会跳转到相应的图片。 5.以及前沿所述的无缝轮播。

开搞~~ Html代码:

(内有注释解析)

//初始状态是真正的图片1,也就是绝对定位-600px ![](img/555.jpg) ![](img/111.jpg) ![](img/222.jpg) ![](img/333.jpg) ![](img/444.jpg) ![](img/555.jpg) ![](img/111.jpg) //动画开始时小圆点位于第一个 //后一个箭头 开始讲解代码: 1.箭头控制 var prev=document.getElementById("prev"); var next=document.getElementById("next"); var list=document.getElementById("list"); prev.onclick=function(){ list.style.left=parseInt(list.style.left)-600+"px"; } next.onclick=function(){ list.style.left=parseInt(list.style.left)+600+"px"; }

给a标签绑定点击事件,先获取list的left属性并且取出数字进行运算操作。下面我们来做一些优化,把定义一个function animate()函数,传入offset参数,并把var newLeft=parseInt(list.style.left) +offset;,然后让prev和next的点击事件调用这个函数。

function animate(offset){ list.style.left=newLeft+offset+"px"; } prev.onclick=function(){ animate(-600); } next.onclick=function(){ animate(600); }

然后我们会发现当我们点击到第五张图片left=-3000px时,它应该滚到真正的第1张而不是副本1。我们可以像下面这样写实现无缝滚动:

function animate(offset){ list.style.left=newLeft+offset+"px"; if (newLeft >-600) { list.style.left=-3000+"px"; }; if (newLeft 0 && parseInt(list.style.left) < newLeft) || (speed < 0 && parseInt(list.style.left) > newLeft)) { list.style.left = parseInt(list.style.left) + speed + 'px'; setTimeout(go, inteval);//递归函数 } else { animated=false; list.style.left=newLeft+"px"; if (newLeft >-600) { list.style.left=-3000+"px"; }; if (newLeft window.onload = function () { var prev = document.getElementById("prev"); var next = document.getElementById("next"); var list = document.getElementById("list"); var buttons = document.getElementById("buttons").getElementsByTagName("span"); var container = document.getElementById("container"); var index = 1; var timer; var animated = false; function shownButton() { for (var i = 0; i < buttons.length ; i++) { if ( buttons[i].className == 'on') { buttons[i].className = ''; /* prev和next每click一次, 就会清除一次前一个class为on的span元素, 所以没有必要再去循环下面的span*/ break; } // 或者直接遍历清除 buttons[i].className=""; } buttons[index - 1].className = "on"; } function animate(offset) { var time = 300; var inteval = 10; var speed = offset / (time / inteval); animated = true;//更改全局变量,防止跳图 var newLeft = parseInt(list.style.left) + offset; function go() { if ( (speed > 0 && parseInt(list.style.left) < newLeft) || (speed < 0 && parseInt(list.style.left) > newLeft)) { list.style.left = parseInt(list.style.left) + speed + 'px'; setTimeout(go, inteval); } else { animated = false;//全局变量 list.style.left=newLeft+"px"; if (newLeft > -600) { list.style.left =- 3000 + "px"; }; if (newLeft


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭